package com.lian.hope.service;

import com.lian.hope.model.dto.UsersAuthDTO;
import com.lian.hope.model.dto.UserDTO;
import com.lian.hope.model.po.Permission;
import com.lian.hope.model.po.Users;
import com.lian.hope.model.vo.OperateVO;
import com.lian.hope.model.vo.ProjectsVO;
import com.lian.hope.model.vo.UsersVO;
import com.lian.hope.model.vo.VolunteerActivitiesVO;

import java.util.List;

public interface UsersService {
    /**
     * 微信授权登录
     *
     * @param code
     * @param usersDTO
     * @return
     */
    String authWechatLogin(UsersAuthDTO usersDTO);

    /**
     * 根据用户id更新用户信息
     *
     * @param userDTO
     * @param openId
     * @return
     */
    void updateUsersById(UserDTO userDTO, Long userId);


    /**
     * 获取用户所有捐款的项目
     * @param userId
     * @return
     */
    List<ProjectsVO> listDonationsProjectsByUserId(Long userId);

    /**
     * 根据用户id获取用户所有报名活动
     * @param userId
     * @return
     */
    List<VolunteerActivitiesVO> listRegisterActivitiesByUserId(Long userId);

    UsersVO getUserInfoById(Long userId);

    /**
     * 登录管理员账号
     * @return
     */
    String loginAdminUser();

    Boolean updateUserPointsById(Integer points, Long userId);

    /**
     * 根据角色id获取用户对应的权限列表
     * @param roleId
     * @return
     */
    List<Permission> queryPermissionByRoleId(Integer roleId);

    List<OperateVO> getUserOperateByRole(Long userId);

    String smsLogin(String phoneNumber, String wxCode);

    Boolean getUserByPhoneNumber(String phoneNumber);
}
